The IMSL_SP_BDSOL procedure computes the LU factorization of a matrix stored in band storage mode.
Note: This routine requires an IDL Analyst license. For more information, contact your Exelis VIS sales or technical support representative.
The IMSL_SP_BDFAC function computes the LU factorization of A with based on the blocked LU factorization algorithm given in Du Croz, et al, (1990). Level-3 BLAS invocations were replaced by in-line loops. The blocking factor BLK_FACTOR has the default value of 1, but can be reset to any positive value not exceeding 32.
An estimate of the L1 condition number of A is computed using Higham’s modifications to Hager’s method, as given in Higham (1988). If the estimated condition number is greater than 1/ε (where ε is the machine precision), a warning message is issued. This indicates that very small changes in A may produce large changes in the solution x.
Consider the 1000 x 1000 banded matrix below:
This example computes the solution to Ax1 = b1 and Ax2 = b2, where b1 and b2 are random vectors. The factorization is computed just once, using IMSL_SP_BDFAC, and the solutions are computed using IMSL_SP_BDSOL.
n_rows = 1000L
nlca = 1L
nuca = 1L
a = DBLARR(n_rows*(nlca+nuca+1))
a(1:n_rows-1) = 4
a(n_rows:2*n_rows-1) = -1
a(2*n_rows:*) = 4
; Fill A with the values of the bands.
seed = 123L
b1 = RANDOMU(seed, n_rows)
b2 = RANDOMU(seed, n_rows)
; Fill random vectors
IMSL_SP_BDFAC, nlca, nuca, n_rows, a, pivot, factor
; Compute the factorization using IMSL_SP_BDFAC.
x1 = IMSL_SP_BDSOL(b1, nlca, nuca, Factor = factor, Pivot = pivot)
; Compute solution of Ax1 = b1 above, and output residual below.
PM, TOTAL(ABS(IMSL_SP_MVMUL(n_rows, n_rows, nlca, nuca, $
a, x1)-b1))
1.2367884e-13
x2 = IMSL_SP_BDSOL(b2, nlca, nuca, Factor = factor, Pivot = pivot)
; Compute the solution of Ax2 = b2 above, and output residual.
PM, TOTAL(ABS(IMSL_SP_MVMUL(n_rows, n_rows, nlca, nuca, $
a, x2)-b2))
9.1537888e-14
IMSL_SP_BDFAC, nlca, nuca, n_rows, a, pivot, factor [, BLK_FACTOR=value] [, CONDITION=variable] [, /DOUBLE]
None.
Array of size (nlca + nuca + 1) x n containing the n x n banded coefficient matrix in band storage mode A(i, j). See “Band Storage Format” for a description of band storage mode.
A named variable that will contain an array of size (2*nlca + nuca + 1) x n_rows containing the LU factorization of A with column pivoting. The keywords FACTOR and CONDITION cannot be used together.
Number of lower codiagonals in a.
Number of upper codiagonals in a.
Number of rows in a.
A named variable that will contain a one-dimensional array containing the pivot sequence. The keywords PIVOT and CONDITION cannot be used together.
The blocking factor. This keyword must be set no larger than 32. Default: BLK_FACTOR = 1.
Named variable into which an estimate of the L1 condition number is stored. This keyword cannot be used with PIVOT and FACTOR.
If present and nonzero, double precision is used.
|
6.4 |
Introduced |